
/*
 * GET home page.
 */
var crypto = require('crypto');
var User = require('../models/user.js');
var Post = require('../models/post.js');

module.exports=function(app){
	
	//index
	
	app.get('/',function(req,res){
		//res.render('index',{title:'首页',posts:[],layout:'template'});
		
		Post.get(null,function(err,posts){
			if(err){
				posts=[];
			}
			res.render('index',{
				title:'首页',
				posts:posts,
				layout:'template'
			});
		});
	});

	//login页面
	app.get('/login', checkNotLogin);
	app.get('/login',function(req,res){
		res.render('login',{title:'用户登录',layout:'template'});
	});

	//POST login
	app.post('/login', checkNotLogin);
	app.post('/login',function(req,res){
		var md5=crypto.createHash('md5');
		var password=md5.update(req.body.password).digest('base64');

		User.get(req.body.username,function(err,user){
			if(!user){
				req.flash('error','用户不存在');
				return res.redirect('/login');
			}
			if(user.password!=password){
				req.flash('error','密码错误');
			}
			req.session.user=user;
			req.flash('success','登录成功');
			res.redirect('/');
		});
	});

	//登出
	app.get('/logout',function(req,res){
		req.session.user=null;
		req.flash('success','登出成功');
		res.redirect('/');
	});

	//注册页面
	app.get('/reg', checkNotLogin);
	app.get('/reg',function(req,res){
		res.render('reg',{title:'用户注册',layout:'template'});
	});
	//POST注册处理
	app.post('/reg', checkNotLogin);
	app.post('/reg',function(req,res){
		//检验用户两次输入的密码是否一致
		if(req.body['password-repeat']!=req.body['password']){
			req.flash('error','两次输入的密码不一致');
			return res.redirect('/reg');
			//res.send('输入的密码不一致');
		}

		//生成密码的散列值
		var md5=crypto.createHash('md5');
		var password=md5.update(req.body.password).digest('base64');

		

		var newUser=new User({
			name:req.body.username,
			password:password,
		});
		//
		User.get(newUser.name,function(err,user){

			if(user){
				err='Username already exists.';
			}
			if(err){
				req.flash('error',err);
				return res.redirect('/reg');
			}
			//如果不存在则新增用户
			newUser.save(function(err){
				if(err){
					req.flash('error',err);
					return res.redirect('/reg');
				}
				req.session.user=newUser;
				req.flash('success','注册成功');
				res.redirect('/');
			});
		});
	});

	app.post('/post',checkLogin);
	app.post('/post',function(req,res){
		var currentUser=req.session.user;
		var post=new Post(currentUser.name,req.body.post);
		post.save(function(err){
			if(err){
				req.flash('error',err);
				return res.redirect('/');
			}
			req.flash('success','发表成功');
			res.redirect('/u/'+currentUser.name);
			//res.redirect('/');
		});
	});
	
	app.get('/u/:user',function(req,res){
		User.get(req.params.user,function(err,user){
			if(!user){
				req.flash('error',err);
				return res.redirect('/');
			}
			Post.get(user.name,function(err,posts){
				if(err){
					req.flash('error',err);
					return res.redirect('/');
				}
				res.render('user',{
					title:user.name,
					posts:posts,
					layout:'template'
				});
			});
			
		});
	});
	

};





function checkLogin(req,res,next){
	if(!req.session.user){
		req.flash('error',"未登录");
		return res.redirect('/login');
	}
	next();
}

function checkNotLogin(req,res,next){
	if(req.session.user){
		req.flash('error','已登录');
		return res.redirect('/');
	}
	next();
}